%     dx1/dt=a*x1-x2*x3;
%     dx2/dt=x1*x3-b*x2;
%     dx3/dt=c*x1*x2-d*x3+g*x1*x4;
%     dx4/dt=k*x4-f*x2;
function K = CHC_chaos(mn)
x10=0.12;x20=0.23;x30=0.34;x40=0.45;N0=1000;


a=8;b=40;c=2;d=14;g=5;f=0.2;k=0.05;

x1(1,1)=x10;x2(1,1)=x20;x3(1,1)=x30;x4(1,1)=x40;

h=0.001;

for i=1:(N0+mn/4)  
    k1=a*x1(1,i)-x2(1,i)*x3(1,i);
    k2=a*(x1(1,i)+h/2*k1)-(x2(1,i)+h/2*k1)*(x3(1,i)+h/2*k1);
    k3=a*(x1(1,i)+h/2*k2)-(x2(1,i)+h/2*k2)*(x3(1,i)+h/2*k2);
    k4=a*(x1(1,i)+h*k3)-(x2(1,i)+h*k3)*(x3(1,i)+h*k3);    
    x1(1,i+1)=x1(1,i)+h/6*(k1+2*k2+2*k3+k4);
    
    L1=x1(1,i)*x3(1,i)-b*x2(1,i);
    L2=(x1(1,i)+h/2*L1)*(x3(1,i)+h/2*L1)-b*(x2(1,i)+h/2*L1);
    L3=(x1(1,i)+h/2*L2)*(x3(1,i)+h/2*L2)-b*(x2(1,i)+h/2*L2);
    L4=(x1(1,i)+h*L3)*(x3(1,i)+h*L3)-b*(x2(1,i)+h*L3);
    x2(1,i+1)=x2(1,i)+h/6*(L1+2*L2+2*L3+L4);
    
    m1=c*x1(1,i)*x2(1,i)-d*x3(1,i)+g*x1(1,i)*x4(1,i);
    m2=c*(x1(1,i)+h/2*m1)*(x2(1,i)+h/2*m1)-d*(x3(1,i)+h/2*m1)+g*(x1(1,i)+h/2*m1)*(x4(1,i)+h/2*m1);
    m3=c*(x1(1,i)+h/2*m2)*(x2(1,i)+h/2*m2)-d*(x3(1,i)+h/2*m2)+g*(x1(1,i)+h/2*m2)*(x4(1,i)+h/2*m2);
    m4=c*(x1(1,i)+h*m3)*(x2(1,i)+h*m3)-d*(x3(1,i)+h*m3)+g*(x1(1,i)+h*m3)*(x4(1,i)+h*m3);    
    x3(1,i+1)=x3(1,i)+h/6*(m1+2*m2+2*m3+m4);
    
    n1=k*x4(1,i)-f*x2(1,i);
    n2=k*(x4(1,i)+h/2*n1)-f*(x2(1,i)+h/2*n1);
    n3=k*(x4(1,i)+h/2*n2)-f*(x2(1,i)+h/2*n2);
    n4=k*(x4(1,i)+h*n3)-f*(x2(1,i)+h*n3);
    x4(1,i+1)=x4(1,i)+h/6*(n1+2*n2+2*n3+n4);    
end

B=[];
for i=1:mn/4+1
    M=mod(floor(x1(1,1000+i)+x2(1,1000+i)+x3(1,1000+i)+x4(1,1000+i)),3);
    if M==0
       B=[B x1(1,1000+i) x3(1,1000+i) x2(1,1000+i) x4(1,1000+i)];
    end
    
    if M==1
        B=[B x2(1,1000+i) x4(1,1000+i) x3(1,1000+i) x1(1,1000+i)];
    end
            
    if M==2
        B=[B x4(1,1000+i) x1(1,1000+i) x3(1,1000+i) x2(1,1000+i)];     
    end
end

K=zeros(1,mn+4);
for i=1:mn+4
    K(i)=mod(floor((abs(B(i))-floor(abs(B(i))))*10^14),256);
end